图像体素取向

了解图像体素轴的近似世界空间取向有时很有用。

请参阅坐标系统和仿射体素和世界坐标轴的背景。

例如,假设我们有一个身份仿射的图像:

>
>
>
import 
numpy 
as 
np 
>
>
>
import 
nibabel 
as 
nib 
>
>
>
affine 
= 
np 
。
眼
(
4 
)
#身份仿射
>
>
>
voxel_data 
= 
np 
。
随机
。
正常
(
大小
= 
(
10 
,
11 
,
12 
))
>
>
>
IMG 
= 
笔尖
。
Nifti1Image 
(
voxel_data 
,
仿射
)

由于仿射是身份仿射,所以体素轴与世界轴对齐。按照惯例,nibabel世界轴始终处于RAS +方向(从左到右,在前面后面,低于上层)。

假设我们沿着第一个体素轴取了一个体素线:

>
>
>
single_line_axis_0 
= 
voxel_data 
[:,
0 
,
0 
]

第一个体素轴对齐到从左到右的世界坐标轴。这意味着第一个体素是在世界的左边,而最后一个体素是在世界的右边。

这里是第二个轴上的一行:

>
>
>
single_line_axis_1 
= 
voxel_data 
[ 
0 
,
:,
0 
]

这条线上的第一个体素是朝向世界的后方,最后是朝向前方。

>
>
>
single_line_axis_2 
= 
voxel_data 
[ 
0 
,
0 
,
:]

这条线上的第一个体素是朝向世界的下层,而朝向上层的则是最后一个。

因此该图像具有RAS +体素轴。

在其他情况下,轴的方向是不是很明显。例如,这里是我们的例子NIfTI 1文件:

>
>
>
import 
os 
>
>
>
from 
nibabel.testing 
import 
data_path 
>
>
>
example_file 
= 
os 
。
路径
。
join 
(
data_path 
,
'example4d.nii.gz' 
)
>
>
>
img 
= 
nib 
。
加载
(
example_file 
)

这里是仿射(精确到两位数):

>
>
>
np 
。
set_printoptions 
(
precision 
= 
2 
,
suppress 
= 
True 
)
>
>
>
img 
。
仿射
阵列([[-2,0,0.117.86],
       [- 
0.1.97 
,-0.36,-35.72],
       [0., 
0.22,2.17 
,-7.25],
       [ ,0.,1.]])

这里体素轴的取向是什么?

尼贝贝尔有个例程告诉你,叫aff2axcodes

>
>
>
nib 
。
aff2axcodes 
(
IMG 
。
仿射
)
( 'L', 'A', 'S')

体素取向最接近:

  1. 第一个体素轴从右到左;
  2. 第二个体素轴从后面到前面;
  3. 第三个体素轴从低级到高级。

有时您可能需要重新排列图像体素轴,使其尽可能靠近RAS +方向。我们将这个体素取向称为规范的体素取向,因为RAS +是我们规范的世界取向。重新排列体素轴意味着反转和/或重新排列体素轴。

你可以这样做as_closest_canonical

>
>
>
canonical_img 
= 
nib 
。
as_closest_canonical 
(
img 
)
>
>
>
canonical_img 
。
仿射
阵列([[2.,0.,0.,-136.14],
       [0. 1.97,-0.36 
,-35.72],
[-0。,0.32,2.17 
       ,-7.25],
       [0.,0。 ,0.,1.]])
>
>
>
nib 
。
aff2axcodes 
(
canonical_img 
。
仿射
)
('R','A','S')

results matching ""

    No results matching ""